home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / ada / c01lab4.zip / LRMRDR / LRM_CHAP.ZIP / CHAPAE.DOC < prev    next >
Text File  |  1992-04-21  |  19KB  |  830 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11. >                              E. Syntax Summary
  12.  
  13.  
  14.  
  15.  
  16.     2.1
  17.  
  18.     graphic_character ::= basic_graphic_character
  19.        | lower_case_letter | other_special_character
  20.  
  21.     basic_graphic_character ::=
  22.          upper_case_letter | digit
  23.        | special_character | space_character
  24.  
  25.     basic_character ::=
  26.          basic_graphic_character | format_effector
  27.  
  28.     2.3
  29.  
  30.     identifier ::=
  31.        letter {[underline] letter_or_digit}
  32.  
  33.     letter_or_digit ::= letter | digit
  34.  
  35.     letter ::= upper_case_letter | lower_case_letter
  36.  
  37.     2.4
  38.  
  39.     numeric_literal ::= decimal_literal | based_literal
  40.  
  41.     2.4.1
  42.  
  43.     decimal_literal ::= integer [.integer] [exponent]
  44.  
  45.     integer ::= digit {[underline] digit}
  46.  
  47.     exponent ::= E [+] integer | E - integer
  48.  
  49.     2.4.2
  50.  
  51.     based_literal ::=
  52.        base # based_integer [.based_integer] # [exponent]
  53.  
  54.     base ::= integer
  55.  
  56.     based_integer ::=
  57.        extended_digit {[underline] extended_digit}
  58.  
  59.     extended_digit ::= digit | letter
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.     2.5
  72.  
  73.     character_literal ::= 'graphic_character'
  74.  
  75.     2.6
  76.  
  77.     string_literal ::= "{graphic_character}"
  78.  
  79.     2.8
  80.  
  81.     pragma ::=
  82.        pragma identifier [(argument_association
  83.                                {, argument_association})];
  84.  
  85.     argument_association ::=
  86.          [argument_identifier =>] name
  87.        | [argument_identifier =>] expression
  88.  
  89.     3.1
  90.  
  91.     basic_declaration ::=
  92.          object_declaration     | number_declaration
  93.        | type_declaration       | subtype_declaration
  94.        | subprogram_declaration | package_declaration
  95.        | task_declaration       | generic_declaration
  96.        | exception_declaration  | generic_instantiation
  97.        | renaming_declaration   | deferred_constant_declaration
  98.  
  99.     3.2
  100.  
  101.     object_declaration ::=
  102.          identifier_list : [constant] subtype_indication [:= expression];
  103.        | identifier_list : [constant] constrained_array_definition
  104.                                                          [:= expression];
  105.  
  106.     number_declaration ::=
  107.          identifier_list : constant := universal_static_expression;
  108.  
  109.     identifier_list ::=  identifier {, identifier}
  110.  
  111.     3.3.1
  112.  
  113.     type_declaration ::=  full_type_declaration
  114.        | incomplete_type_declaration | private_type_declaration
  115.  
  116.     full_type_declaration ::=
  117.      type identifier [discriminant_part] is type_definition;
  118.  
  119.     type_definition ::=
  120.          enumeration_type_definition | integer_type_definition
  121.        | real_type_definition        | array_type_definition
  122.        | record_type_definition      | access_type_definition
  123.        | derived_type_definition
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.     3.3.2
  137.  
  138.     subtype_declaration ::=
  139.        subtype identifier is subtype_indication;
  140.  
  141.     subtype_indication ::=  type_mark [constraint]
  142.  
  143.     type_mark ::= type_name | subtype_name
  144.  
  145.     constraint ::=
  146.          range_constraint       | floating_point_constraint
  147.        | fixed_point_constraint | index_constraint
  148.        | discriminant_constraint
  149.  
  150.     3.4
  151.  
  152.     derived_type_definition ::= new subtype_indication
  153.  
  154.     3.5
  155.  
  156.     range_constraint ::=  range range
  157.  
  158.     range ::=  range_attribute
  159.        | simple_expression .. simple_expression
  160.  
  161.     3.5.1
  162.  
  163.     enumeration_type_definition ::=
  164.        (enumeration_literal_specification
  165.           {, enumeration_literal_specification})
  166.  
  167.     enumeration_literal_specification ::=  enumeration_literal
  168.  
  169.     enumeration_literal ::=  identifier | character_literal
  170.  
  171.     3.5.4
  172.  
  173.     integer_type_definition ::=  range_constraint
  174.  
  175.     3.5.6
  176.  
  177.     real_type_definition ::=
  178.        floating_point_constraint | fixed_point_constraint
  179.  
  180.     3.5.7
  181.  
  182.     floating_point_constraint ::=
  183.        floating_accuracy_definition [range_constraint]
  184.  
  185.     floating_accuracy_definition ::=
  186.        digits static_simple_expression
  187.  
  188.     3.5.9
  189.  
  190.     fixed_point_constraint ::=
  191.        fixed_accuracy_definition [range_constraint]
  192.  
  193.     fixed_accuracy_definition ::=
  194.        delta static_simple_expression
  195.  
  196.     3.6
  197.  
  198.     array_type_definition ::=
  199.        unconstrained_array_definition | constrained_array_definition
  200.  
  201.     unconstrained_array_definition ::=
  202.        array(index_subtype_definition {, index_subtype_definition}) of
  203.                 component_subtype_indication
  204.  
  205.     constrained_array_definition ::=
  206.        array index_constraint of component_subtype_indication
  207.  
  208.     index_subtype_definition ::= type_mark range <>
  209.  
  210.     index_constraint ::=  (discrete_range {, discrete_range})
  211.  
  212.     discrete_range ::= discrete_subtype_indication | range
  213.  
  214.     3.7
  215.  
  216.     record_type_definition ::=
  217.        record
  218.           component_list
  219.        end record
  220.  
  221.     component_list ::=
  222.           component_declaration {component_declaration}
  223.        | {component_declaration} variant_part
  224.        |  null;
  225.  
  226.     component_declaration ::=
  227.        identifier_list : component_subtype_definition [:= expression];
  228.  
  229.     component_subtype_definition ::=  subtype_indication
  230.  
  231.     3.7.1
  232.  
  233.     discriminant_part ::=
  234.        (discriminant_specification {; discriminant_specification})
  235.  
  236.     discriminant_specification ::=
  237.        identifier_list : type_mark [:= expression]
  238.  
  239.     3.7.2
  240.  
  241.     discriminant_constraint ::=
  242.        (discriminant_association {, discriminant_association})
  243.  
  244.     discriminant_association ::=
  245.        [discriminant_simple_name {| discriminant_simple_name} =>]
  246.                 expression
  247.  
  248.     3.7.3
  249.  
  250.     variant_part ::=
  251.        case discriminant_simple_name is
  252.            variant
  253.           {variant}
  254.        end case;
  255.  
  256.     variant ::=
  257.        when choice {| choice} =>
  258.           component_list
  259.  
  260.     choice ::= simple_expression
  261.        | discrete_range | others | component_simple_name
  262.  
  263.     3.8
  264.  
  265.     access_type_definition ::= access subtype_indication
  266.  
  267.     3.8.1
  268.  
  269.     incomplete_type_declaration ::=
  270.        type identifier [discriminant_part];
  271.  
  272.     3.9
  273.  
  274.     declarative_part ::=
  275.        {basic_declarative_item} {later_declarative_item}
  276.  
  277.     basic_declarative_item ::= basic_declaration
  278.        | representation_clause | use_clause
  279.  
  280.     later_declarative_item ::= body
  281.        | subprogram_declaration | package_declaration
  282.        | task_declaration       | generic_declaration
  283.        | use_clause             | generic_instantiation
  284.  
  285.     body ::= proper_body | body_stub
  286.  
  287.     proper_body ::=
  288.        subprogram_body | package_body | task_body
  289.  
  290.     4.1
  291.  
  292.     name ::= simple_name
  293.        | character_literal  | operator_symbol
  294.        | indexed_component  | slice
  295.        | selected_component | attribute
  296.  
  297.     simple_name ::= identifier
  298.  
  299.     prefix ::= name | function_call
  300.  
  301.     4.1.1
  302.  
  303.     indexed_component ::= prefix(expression {, expression})
  304.  
  305.     4.1.2
  306.  
  307.     slice ::= prefix(discrete_range)
  308.  
  309.     4.1.3
  310.  
  311.     selected_component ::= prefix.selector
  312.  
  313.     selector ::= simple_name
  314.        | character_literal | operator_symbol | all
  315.  
  316.     4.1.4
  317.  
  318.     attribute ::= prefix'attribute_designator
  319.  
  320.     attribute_designator ::=
  321.        simple_name [(universal_static_expression)]
  322.  
  323.     4.3
  324.  
  325.     aggregate ::=
  326.        (component_association {, component_association})
  327.  
  328.     component_association ::=
  329.        [choice {| choice} => ] expression
  330.  
  331.     4.4
  332.  
  333.     expression ::=
  334.          relation {and relation} | relation {and then relation}
  335.        | relation {or relation}  | relation {or else relation}
  336.        | relation {xor relation}
  337.  
  338.     relation ::=
  339.          simple_expression [relational_operator simple_expression]
  340.        | simple_expression [not] in range
  341.        | simple_expression [not] in type_mark
  342.  
  343.     simple_expression ::=
  344.        [unary_adding_operator] term {binary_adding_operator term}
  345.  
  346.     term ::= factor {multiplying_operator factor}
  347.  
  348.     factor ::= primary [** primary] | abs primary | not primary
  349.  
  350.     primary ::=
  351.          numeric_literal | null | aggregate | string_literal
  352.        | name | allocator | function_call | type_conversion
  353.        | qualified_expression | (expression)
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.     4.5
  365.  
  366.     logical_operator  ::=  and | or | xor
  367.  
  368.     relatio